// 引入依赖
const express = require('express');
const cors = require('cors');
const connectDB = require('./config/db'); // 数据库连接
const auth = require('./middleware/auth'); // 权限验证中间件
const session = require('express-session');

// 创建 Express 应用
const app = express();
const allowedOrigins = ['http://localhost:3005', 'http://localhost:8080'];
// 连接数据库
connectDB();

// 应用中间件
app.use(cors({
  origin: allowedOrigins, // 替换为您的前端应用程序的域名
  credentials: true
}));// 允许跨域请求
app.use(express.json()); // 解析 JSON 请求体

// 权限验证中间件 (应用于所有路由，除了登录路由)
app.use(auth);
// 配置 session 中间件
app.use(session({
  secret: 'cookie_secret', // 使用一个安全的密钥
  resave: false,
  saveUninitialized: true,
  cookie: {
    secure: false,
    maxAge: 1000 * 60 * 60 * 24 // 24 小时
  } // 将 secure 设置为 true，如果您使用 HTTPS
}));

// 注册路由
app.use('/', require('./routes/status')); // 状态路由 (例如 /api/status)

// API 路由 (需要权限验证)
app.use('/api/depts', require('./routes/depts'));     // 部门路由
app.use('/api/permissions', require('./routes/permissions')); // 权限路由
app.use('/api/roles', require('./routes/roles'));       // 角色路由
app.use('/api/users', require('./routes/users'));       // 用户路由
app.use('/api/captcha', require('./routes/captcha'));

// 认证路由 (登录等)
app.use('/api/auth', require('./routes/auth'));

// 错误处理中间件 (放在最后)
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

// 启动服务器
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server started on port ${PORT}`));